package com.cn.wanxi.dao.impl;

import com.cn.wanxi.dao.IUserDao;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.util.GetSqlSession;
import com.cn.wanxi.util.JDBC;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * 1.mybatis包
 * 2.建一个资源文件resouces
 * 3.新建config.xml文件 配置文件
 * 读取数据库，sql打印遇见，mapper映射
 * 4.数据库配置jdbc.properties
 * 5.新建一个GetSqlSession，所有执行操作需要调用GetSqlSession
 * 6.创建映射文件userMapper.xml
 * 1）<mapper namespace="com.cn.wanxi.dao.IUserDao"> namespace对应的是接口
 * 2） <insert id="add" parameterType="com.cn.wanxi.model.UserModel">
 * id对应的是接口里面的方法名称 parameterType对应的是传递的参数
 * 7.修改数据实现层
 * GetSqlSession.getSqlSession().insert（a,b）
 * a：代表我们需要执行的方法的地址 namespace+id
 * com.cn.wanxi.dao.IUserDao.add
 * b:代表传递的参数userModel
 * public int add(UserModel userModel)
 */
public class UserImpl implements IUserDao {
    @Override
    public int add(UserModel userModel) {
        return GetSqlSession.getSqlSession().insert("com.cn.wanxi.dao.IUserDao.add", userModel);
    }

    @Override
    public UserModel findByUsername(String username) {
        return GetSqlSession.getSqlSession().selectOne("com.cn.wanxi.dao.IUserDao.findByUsername", username);
    }

    @Override
    public UserModel isHaveFindByUsernameAndPassword(UserModel userModel) {
        return GetSqlSession.getSqlSession().selectOne("com.cn.wanxi.dao.IUserDao.isHaveFindByUsernameAndPassword", userModel);
    }

    @Override
    public List<UserModel> findAll() {
        return GetSqlSession.getSqlSession().selectList("com.cn.wanxi.dao.IUserDao.findAll");
    }

    @Override
    public int delete(Integer id) {
        return GetSqlSession.getSqlSession().delete("com.cn.wanxi.dao.IUserDao.delete");
    }

    @Override
    public List<UserModel> findAllBySome(UserModel userModel) {
        return GetSqlSession.getSqlSession().selectList("com.cn.wanxi.dao.IUserDao.findAllBySome", userModel);
    }

    @Override
    public UserModel findById(Integer id) {
        return GetSqlSession.getSqlSession().selectOne("com.cn.wanxi.dao.IUserDao.findById", id);
    }

    @Override
    public int edit(UserModel userModel) {
        return GetSqlSession.getSqlSession().update("com.cn.wanxi.dao.IUserDao.edit",userModel);
    }

    @Override
    public int getCount(UserModel userModel) {
        return GetSqlSession.getSqlSession().selectOne("com.cn.wanxi.dao.IUserDao.getCount",userModel);
    }
}
